package com.example.config;


import com.alibaba.ttl.TransmittableThreadLocal;
import lombok.Data;

/**
 * @author lbwxxc
 * @date 2025/4/9 21:36
 * @description: 请求上下文
 */
public class ReqInfoContext {

    // 本地上下文，每个线程唯一
    private static TransmittableThreadLocal<ReqInfo> contexts = new TransmittableThreadLocal<>();

    public static void addReqInfo(ReqInfo reqInfo) {
        contexts.set(reqInfo);
    }

    public static void clear() {
        contexts.remove();
    }

    public static ReqInfo getReqInfo() {
        return contexts.get();
    }

    @Data
    public static class ReqInfo {
        /**
         *  用户Id
         */
        private Integer id;
        /**
         * 访问的域名
         */
        private String host;
        /**
         * 访问路径, 标识服务器上具体的资源位置
         */
        private String path;
        /**
         * 客户端ip
         */
        private String clientIp;
        /**
         * referer, 告知服务器当前请求的来源页面的 URL
         */
        private String referer;
        /**
         * post 表单参数
         */
        private String payload;
        /**
         * 设备信息
         */
        private String userAgent;
    }
}
